<!DOCTYPE html>

<?php 
  $this->assign('title_for_layout', 'Conceitos básicos PHP - Variáveis, Constantes, Operadores, Array');
  $this->assign('keywords_for_layout', ' variáveis, constantes, operadores comandos básicos PHP sessão');
  $this->assign('description_for_layout', 'Mostrarei uma Visão geral dos conceitos do PHP: variáveis, constantes, operadores, comandos básicos PHP. e conceito de sessão.');
?>


<article>
<header><h2>Conceitos Básicos</h2></header>

<p>Esse tópico tem como objetivo apresentar uma visão geral dos conceitos de: variáveis, constantes, operadores e comandos básicos da linguagem. Também será exibido o conceito de sessão.</p>
<p>A tag padrão para abertura e fechamento de um trecho de código PHP é: &#60;?php ?&#62;</p>
<h3>Variável</h3>
<p>Pessoal agora vou falar um pouco sobre variável.</p>
<p>Dica: para criá-las tente sempre utilizar nomes curtos e que representem o que elas irão armazenar.</p>
<p>O PHP também apresenta algumas regras de sintaxes da linguagem para nomeação de uma variável.</p>

<table>
	<tr><td>Regras para criação de variáveis:</td></tr>
	<tr><td>1 - Toda a variável em PHP deve começar com $ seguido do nome da mesma. Ex: $total</td></tr>
	<tr><td>2 - As variáveis em PHP são case-sentitive, ou seja fazem distinção entre maiúsculas e minúsculas. Ex: idade é diferente de Idade</td></tr>
</table>
<p>O PHP também interage com variáveis externas ao script, como valores vindos de um formulário, essas sãos denominadas superglobais e são classificadas da seguinte maneira:</p>
<table class="table table-hover">
	<tr>
		<th>Variável</th>
		<th>Descrição</th>
	</tr>
	<tr>
		<td>$_COOKIE</td>
		<td>Variáveis armazenadas em cookies no navegador.</td>
	</tr>
	<tr>
		<td>$_ENV</td>
		<td>Variáveis disponíveis no ambiente de execução do script.</td>
	</tr>
	<tr>
		<td>$_FILES</td>
		<td>Armazena as variáveis enviadas via upload em formulários.</td>
	</tr>
	<tr>
		<td>$_GET</td>
		<td>Variáveis enviadas para script via método HTTP GET.</td>
	</tr>
	<tr>
		<td>$GLOBALS</td>
		<td>Contém a referência a todas as variáveis que estão disponíveis no escopo global do script.</td>
	</tr>
	<tr>
		<td>$_POST</td>
		<td>Variáveis enviadas para o script via método HTTP POST</td>
	</tr>
	<tr>
		<td>$_REQUEST</td>
		<td>Variáveis enviadas ao script via mecanismo de input que são: $_GET, $_POST e $_COOKIE</td>
	</tr>
	<tr>
		<td>$_SERVER</td>
		<td>São variáveis referentes ao servidor no qual o script está executando.</td>
	</tr>
	<tr>
		<td>$_SESSION</td>
		<td>Variáveis armazenadas em sessão.</td>
	</tr>
</table>

<p>Para finalizar sobre as variáveis vamos ver mais dois pontos. Primeiramente observe o exemplo a seguir sobre o uso de variáveis globais.</p>

<?php echo $this->Syntax->highlight('conceitos_basicos/calculasalario.php') ?>
<b>Resultado: </b>
<br>
O salário líquido é: 1000.

<p>
	Se não tivesse sido utilizada a palavra-chave global, dentro da função que calcula o salário, o valor da variável $gsalliq seria 0. Como sugestão para padronizar seu código e para facilitar o uso da palavra-chave global, você pode diferenciar variáveis locais de globais, prefixando-a com a letra g. Então se você criasse uma variável que tivesse escopo global, poderia nomeá-la de $gnomevariavel.
</p>
<p>
	O segundo ponto é a questão da variável estática, em que o valor de uma variável existe somente no escopo local da função, mas não perde seu valor quando o nível de execução do programa deixa seu escopo. Esse tipo de variável é muito útil quando trabalhamos com a questão de recursividade em programas.
</p>
<?php echo $this->Syntax->highlight('conceitos_basicos/varestatica.php') ?>
<h3>Constantes</h3>
<p>
As constantes são identificadores com valores únicos, e como seu nome sugere, esse valor não é alterado durante a execução do script. Para criar uma constante devemos utilizar a função define que tem a seguinte sintaxe:
</p>
<code>bool define ( string $name , mixed $value [, bool $case_insensitive ] )</code>
<p>
<h4>Parâmetros</h4>
<p><b>name: </b> o nome da constante.</p>
<p><b>value: </b> O valor da constante; somente escalar e valores null são permitidos. Valores escalares são integer, float, string ou boolean.</p>
<p><b>case_insensitive: </b> Se definido para TRUE, a constante será definida case-insensitive. O comportamento padrão é case-sensitive; CONSTANT e Constant representam valores diferentes.</p>
</p>
<p>Vamos ver como trabalhar com constante no exemplo a seguir.</p>
<?php echo $this->Syntax->highlight('conceitos_basicos/constantes.php') ?>
<b>Resultado:</b>
<br>
Isto é um teste
<?php echo $this->Syntax->highlight('conceitos_basicos/constantes2.php') ?>
<b>Resultado:</b>
<br>
Isto é um teste
<br>
Isto é um teste
<br>
Isto é um teste
<br>
<h3>Operadores</h3>
	<p>Operadores são usados para realizar alguma ação sobre um ou mais valores. Os operadores são classificados em grupos no PHP, que são: unários, que operam sobre um valor como o operador de incremento, representado como ++. Em outro grupo encontram-se os operadores binários, onde estão a maioria dos operadores. Ainda um terceiro grupo contempla o único operador ternário, de decisão da linguagem, que é representado pelo caractere ?.</p>
<h3>Operadores aritméticos</h3>
	<p>São operadores da linguagem que têm o mesmo significado que os equivalentes na matemática aritmética.</p>
<table class="table table-hover">
	<tr><th>Operador</th><th>Função</th></tr>
	<tr><td>+</td><td>Somar valores. Ex $valor1 + $valor2</td></tr>
	<tr><td>-</td><td>Subtrair valores.Ex $valor1 - $valor2</td></tr>
	<tr><td>*</td><td>Multiplicar valores. Ex $valor1 * $valor2</td></tr>
	<tr><td>/</td><td>Dividir valores.Ex $valor1 / $valor2</td></tr>
	<tr><td>%</td><td>Módulo de valores: resto da divisão inteira entre os números. Ex: $valor1 % $valor2</td></tr>
</table>
<h3>Operadores de comparação de atributos</h3>
<p>Operadores de comparação de atributos consistem basicamente de comparar dois valores e retornar um BOOLEANO dessa operação. Já operador de atribuição como o próprio nome diz, serve para atribuir valores a uma variável.</p>

<table class="table table-hover">
	<tr><th>Operador</th><th>Função</th></tr>
	<tr><td>=</td><td>Operador de atribuição. Ex: $valor1 = 1</td></tr>
	<tr>
		<td>==</td>
		<td>Operador de igualdade, retorna TRUE se os dois valores são iguais. Ex. $valor1 == $valor2</td>
	</tr>
	<tr><td >!=</td>
		<td>
			Operador de diferença, retorna TRUE se os dois valores são diferentes. Ex: $valor1 != $valor2
		</td>
	</tr>
	<tr><td><</td><td>Menor que. Ex: $valor1 < 1</td></tr>
	<tr><td>></td><td>Maior que. Ex: $valor1 > 1</td></tr>
	<tr><td><=</td><td>Menor ou igual. Ex: $valor1 <= 1</td></tr>
	<tr><td>>=</td><td>Maior ou igual. Ex: $valor1 >= 1</td></tr>
</table>
	<h3>Operadores de incremento/decremento e aritmético com atribuição</h3>
	<p>Operadores unários de incremento e decremento atuam, como o próprio nome diz, com o incremento e o decremento de uma unidade em variáveis inteiras. Já os operadores aritméticos com atribuição realizam ao mesmo tempo uma operação aritmética (já exibida anteriormente), seguida de uma atribuição para a sua própria variável.</p>

	<table class="table table-hover">
		<tr><th>Operador</th><th>Função</th></tr>
		<tr><td>++$var</td><td>Incrementa $var e então retorna $var incrementada.</td></tr>
		<tr><td>--$var</td><td>Decrementa $var e então retorna $var decrementada. < 1</td></tr>
		<tr><td>$var++</td><td>Retorna $var e depois incrementa.</td></tr>
		<tr><td>$var--</td><td>Retorna $var e depois decrementa.</td></tr>
		<tr><td>+=</td>
			<td>
				Soma o conteúdo de uma variável com um valor, e depois reatribui o resultado nela própria.
				<br>Ex: $var += 5; equivale a codificar $var = $var + 5.
			</td>
		</tr>
		<tr><td>-=</td>
			<td>
				Subtrai o conteúdo de uma variável com o valor, e depois reatribui o resultado nela própria.
				<br>Ex: $var -= 5; equivale a codificar $var = $var - 5;
			</td>
		</tr>
		<tr><td>*=</td>
			<td>
				Multiplica o conteúdo de uma variável com o valor, e depois reatribui o resultado nela própria.
				<br>Ex: $var *= 5; equivale a codificar $var = $var * 5;
			</td>
		</tr>
		<tr><td>/=</td>
			<td>
				Divide o conteúdo de uma variável com o valor, e depois reatribui o resultado nela própria.
				<br>Ex: $var /= 5; equivale a codificar $var = $var / 5;
			</td>
		</tr>
	</table>
	<h3>Operadores lógicos</h3>
	<p>Operadores lógicos servem para realizar operações sobre duas expressões a fim de verificar se o resultado é avaliado como verdadeiro ou falso.</p>

	<table class="table table-hover">
		<tr><th>Operador</th><th>Nome</th><th>Função</th></tr>
		<tr><td>$$</td><td>E</td><td>Incrementa $var e então retorna $var incrementada.</td></tr>
		<tr><td>||</td><td>OU</td><td>Decrementa $var e então retorna $var decrementada. < 1</td></tr>
		<tr><td>!</td><td>NÃO</td><td>Retorna $var e depois incrementa.</td></tr>
		</tr>
	</table>
	<h3>Estrutura de controle</h3>
	<p>As estruturas de controle são essenciais ao fluxo da grande maioria dos scripts, independente de sua linguagem de programação. Para o PHP isso não é exceção. As principais estruturas são as condicionais e as de repetição.</p>
	<h3>Condicionais</h3>
	<p>Estruturas condicionais têm a capacidade de alterar o fluxo de execução do script de acordo com a avaliação de uma expressão lógica fornecida.</p>
	<p>A forma mais simples de sua utilização é o comando if. Sua sintaxe é bastante simples: a expressão é avaliada e se for verdadeiro, o bloco de texto associado ao comando é executado; caso contrário o fluxo segue imediatamente para a próxima linha após esse bloco.</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/if_simples.php') ?>
	<p>Uma segunda possibilidade de fluxo é com o uso em conjunto da cláusula else, também associada a um bloco de código. Nesse caso, se a condição lógica for falsa, o fluxo é direcionado para esse segundo bloco.</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/if_else.php') ?>
	<p>Assim como nas demais linguagens, no PHP também é possivel fazer o aninhamento destas estruturas.</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/aninhamento.php') ?>
	<p>Uma outra possibilidade de uso de estruturas condicionais, com o comando switch, pode ser bastante útil no caso de uma comparação de um expressão com uma série de possíveis valores.</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/switch_simples.php') ?>
	<h3>Repetição</h3>
	<p>Assim como as estruturas condicionais, as estruturas de repetição também alteram o fluxo linear de uma execução do código. Elas oferecem a possibilidade de execução de certa porção de código quantas vezes forem necessárias.</p>
	<p>o primeiro destes comando é o while. Ele é seguido de uma expressão lógica e um bloco de código, que será repetido enquanto esta condição for verdadeira.</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/while_simples.php') ?>
	<p>Outra prossibilidade de execução é com os comandos do / while. Sua funcionalidade é semelhante ao while anterior, mas com uma diferença, a condição é avaliada após a execução do bloco. Isso quer dizer que mesmo se a condição for falsa o bloco será executado ao menos uma vez.</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/do_while.php') ?>
	<p>Outra possibilidade de estrutura de repetição, amplamente utilizada é com o comando for. Ele aceita uma lista de três expressões separadas por ponto-e-vírgula: a primeira delas, de inicialização do comando, é executada apenas uma vez; a segunda é uma expressão lógica que é avaliada, de modo que possa definir se o bloco associado será ou não executado; a terceira é executada a cada repetição do código.</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/for_simples.php') ?>
	<p>Um outro comando amplamente utilizado em repetições de bloco é o foreach.
	<br> Ao contrário do comando for, que repete um bloco de código através da avaliação de expressões lógicas, o foreach atua diretamente sobre o conteúdo de um vetor. Veja o pseudo código:</p>
	<?php echo $this->Syntax->highlight('foreach_sintax.php') ?>
	<p>A seguir um exemplo de um foreach sobre um vetor. Como descrito anteriormente o foreach não precisa de uma variável de controle como o for para percorrer os elementos do vetor.</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/foreach_vetor_simples.php'); ?>
	<h3>Escrita e utilização de funções</h3>
	<p>Funções são extremamente úteis em qualquer linguagem de programação, na medida em que podem agregar certa lógica do código em uma porção isolada do restante do programa. Além da vantagem de manter o código "mais limpo", evita-se a repetição de código caso esse trecho precise ser executado em diferentes momentos do script.</p>
	<p>A utilização de funções constitui a base do paradigma para a programação modular, onde trechos de códigos genéricos são frequentemente utilizados em vários pontos do programa. O mesmo se aplica a programação orientada a objetos, onde as funções definidas em classes são chamadas de métodos desta classe. Veremos sobre orientação a objetos em outro tópico.</p>
	<p>A forma básica de declaração de uma função e sua respectiva chamada no código é:</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/minha_funcao.php'); ?>
	<p>Uma grande vantagem no uso de funções é a possibilidade de passagem de argumentos para ela. A lista de argumentos é especificada na declaração da função. Assim que esta é invocada pelo código, essa lista automaticamente instancia as variáveis da lista de argumentos como sendo locais ao corpo da função. A passagem de argumentos para uma função pode ser feita por valor ou referência. A passagem por valor cria uma nova variável, local a função. Seu comportamento é totalmente independente da variável de chamada. Já o método por referência cria uma variável ponteiro, que contém apenas a referência a variável da chamada desta função. Qualquer alteração nessa variável irá automaticamente refletir na variável que ela aponta.</p>
	<p>No exemplo a seguir vemos que as variáveis $var1 e $var2 são locais a função e estão fora do escopo do código principal. Como são referenciadas por um valor, ambas contêm uma cópia do valor das variáveis $x e $y, utilizadas na chamada da função.
	<br>Ao final da execução desta função, elas são automaticamente destruídas.</p>
	<?php echo $this->Syntax->highlight('passagens_de_parametros_por_valor.php'); ?>
	<p>Já neste outro exemplo a variável $valor, que é instanciada por referência (utilização do caractere & em sua declaração), contém apenas um ponteiro (referência) para a variável $numero do corpo principal do código. Qualquer alteração em seu conteúdo é automaticamente refletida na variável $numero.</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/passagens_de_parametros_por_referencia.php'); 
	?>

	<h3>Arrays</h3>
	<p>Arrays são o tipo de variável com muitas aplicações no PHP. Atualmente um mapa ordenado. Um mapa é um tipo que relaciona valores para chaves.</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/array_sintax.php'); ?>
	<p>Exemplo simples:</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/array_simples.php'); ?>
	<b>Resultado:</b>
	<br>Curitiba
	<br>2013

	<p>Um array também pode conter outro array, para criação de uma estrutura semelhante a uma matriz. Recursivamente, um array pode conter matrizes, e assim por diante.</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/matriz_simples.php'); ?>
	<b>Resultado:</b>
	<br>Brasil
	<br>Paraná
	<br>Japão
	<br>Tóquio

	<p>A lista de funções para trabalhar com arrays é bem ampla, e cobre várias necessidades do desenvolvedor. Entre as funções disponíveis estão algumas para ordenar chaves e valores, dividir o array em arrays menores, indicar posição atual do idice do array, entre outras.</p>
	<?php echo $this->Html->link('Confira mais sobre arrays', 'http://br1.php.net/manual/pt_BR/function.array.php')?>
	<h3>Banco de Dados</h3>
	<p>Como já foi descrito, uma das grandes vantagens do PHP é o seu suporte a vários bancos de dados. O PHP fornece uma camada de abstração PDO, que é uma interface unificada para trabalhar com banco de dados. Falarei mais sobre PDO em um próximo tópico, quem estiver muito curioso pode conferir sobre o PDO <?php echo $this->Html->link('aqui', 'http://br1.php.net/manual/pt_BR/book.pdo.php')?>.</p>
	<h3>Trabalhando Sessões</h3>
	<p>Sessão é uma combinação de arquivos armazenados tanto no lado servidor como no lado cliente. No lado servidor ficam armazenados todos os dados necessários à aplicação, e no segundo, um cookie que faz referência a eles.</p>
	<p>Um cuidado que devemos ter ao recuperar valores de uma sessão é que não há como fazer isso antes de iniciá-la.</p>
	<p>Para adicionar dados em uma sessão, a seguinte sintaxe pode ser utilizada:</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/sessao_sintaxe.php'); ?>
	<p>Outra observação importante: nem todos os tipos de dados podem ser armazenados em sessões, como é o caso o tipo recurso, pois o PHP realiza apenas o controle do seu manipulador. Isso que dizer que um manipulaor de arquivo, criado com a função fopen por exemplo, não pode ser armazenado em sessão.</p>
	<p>Para remover dados de uma sessão você pode usar a função unset.</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/unset_sessao.php'); ?>
	<p>E caso queira destruir uma sessão explicitamente, utilize a função session_destroy.</p>
	<?php echo $this->Syntax->highlight('conceitos_basicos/session_destroy.php'); ?>
<p>Bom para os conceitos básicos do PHP terminamos por aqui. Espero que tenham gostado e até a próxima.</p>
</article>

<?php
  $this->start("referencia_bibliografica");
    echo "<p>Melo, Alexandre Altair; Nascimento, Mauricio G.F. PHP Profissional: APRENDA A DESENVOLVER SISTEMAS PROFISSIONAIS ORIENTADOS A OBJETOS COM PADRÕES DE PROJETO. Novatec Editora, 2007</p>";

    echo '<p>php.net</p>';
    $this->end();
?>